private function Valf(a, varmodel)
function called by Simplex
Arguments
Type |
Intent | Optional | Attributes |
|
Name |
|
real(kind=float),
|
intent(in) |
|
|
:: |
a(:) |
|
integer(kind=short),
|
intent(in) |
|
|
:: |
varmodel |
|
Return Value
real
Variables
Type |
Visibility | Attributes |
|
Name |
| Initial | |
real(kind=float),
|
public |
|
:: |
hoo |
|
|
|
integer(kind=short),
|
public |
|
:: |
i |
|
|
|
Source Code
REAL FUNCTION Valf &
!
(a, varmodel)
IMPLICIT NONE
!Arguments with intent in:
REAL (KIND = float), INTENT (IN) :: a (:)
INTEGER (KIND = short), INTENT(IN) :: varmodel
!local declarations:
REAL (KIND = float) :: hoo
INTEGER (KIND = short) :: i
!---------------------------end of declarations--------------------------------
DO i = 1, ipara
IF ( a (i) < parRangeMin (i) .OR. a (i) > parRangeMax (i) ) THEN
Valf = 1.0E+15
RETURN
END IF
END DO
ieva = ieva + 1
SELECT CASE (ipara)
CASE (1)
range = a(1)
anisotropyAngle = 0.0
anisotropyRatio = 1.0
partialSill = var
nugget = 0.0
CASE (2)
IF (npep == 1) THEN
range = a(1)
nugget = a(2)
partialSill = var - nugget
anisotropyAngle = 0.0
anisotropyRatio = 1.0
ELSE
range = a(1)
partialSill = a(2)
nugget = 0.0
anisotropyAngle = 0.0
anisotropyRatio = 1.0
END IF
CASE (3)
IF (npep == 1) THEN
range = a(1)
partialSill = a(2)
nugget = a(3)
anisotropyAngle = 0.0
anisotropyRatio = 1.0
ELSE
range = a(1)
anisotropyAngle = a(2)
anisotropyRatio = a(3)
nugget = 0.0
partialSill = var
END IF
CASE (4)
IF (npep == 1) THEN
range = a(1)
anisotropyAngle = a(2)
anisotropyRatio = a(3)
nugget = a(4)
partialSill = var - nugget
ELSE
range = a(1)
anisotropyAngle = a(2)
anisotropyRatio = a(3)
partialSill = a(4)
nugget = 0.0
END IF
CASE DEFAULT
range = a(1)
anisotropyAngle = a(2)
anisotropyRatio = a(3)
partialSill = a(4)
nugget = a(5)
END SELECT
CALL Focompu (varmodel, hoo)
Valf = hoo
RETURN
END FUNCTION Valf